home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b5.d64 / read'dir'part2.l < prev    next >
Text File  |  2007-02-28  |  2KB  |  57 lines

  1. 9000 //
  2. 9010 //6 READ DIRECTORY ROUTINES FOLLOW
  3. 9020 //
  4. 9030 PROC DIR'HEADER(D'FILE,REF FILE'END,REF D'NAME$,REF D'ID$) CLOSED
  5. 9040 DISK'GET'SKIP(142,D'FILE,FILE'END)
  6. 9050 DISK'GET'STRING(D'NAME$,16,D'FILE,FILE'END)
  7. 9060 DISK'GET'SKIP(2,D'FILE,FILE'END)
  8. 9070 DISK'GET'STRING(D'ID$,2,D'FILE,FILE'END)
  9. 9080 DISK'GET'SKIP(92,D'FILE,FILE'END)
  10. 9090 ENDPROC DIR'HEADER
  11. 9100 //
  12. 9110 //
  13. 9120 PROC NEXT'FILE(D'FILE,REF F'END,REF FN$,REF FT#,REF FB#,REF BC) CLOSED
  14. 9130 FT#:=GET'TYPE#(D'FILE,F'END)
  15. 9140 GET'NAME(D'FILE,F'END,FN$)
  16. 9150 FB#:=GET'BLOCKS#(D'FILE,F'END)
  17. 9160 CHECK'DIR'CYCLE(D'FILE,F'END,BC)
  18. 9170 ENDPROC NEXT'FILE
  19. 9180 //
  20. 9190 //
  21. 9200 FUNC GET'TYPE#(D'FILE,REF FILE'END) CLOSED
  22. 9210 THIS'TYPE#:=DISK'GET(D'FILE,FILE'END)
  23. 9220 DISK'GET'SKIP(2,D'FILE,FILE'END)
  24. 9230 IF THIS'TYPE#<129 OR THIS'TYPE#>132 THEN THIS'TYPE#:=128 //FIX TYPE
  25. 9240 RETURN THIS'TYPE#
  26. 9250 ENDFUNC GET'TYPE#
  27. 9260 //
  28. 9270 //
  29. 9280 PROC GET'NAME(D'FILE,REF FILE'END,REF F'NAME$) CLOSED
  30. 9290 DISK'GET'STRING(F'NAME$,16,D'FILE,FILE'END)
  31. 9300 FOR SPACE#:=1 TO LEN(F'NAME$) DO
  32. 9310 IF ORD(F'NAME$(SPACE#))=160 THEN F'NAME$(SPACE#):=CHR$(32)
  33. 9320 ENDFOR SPACE#
  34. 9330 DISK'GET'SKIP(9,D'FILE,FILE'END)
  35. 9340 ENDPROC GET'NAME
  36. 9350 //
  37. 9360 //
  38. 9370 FUNC GET'BLOCKS#(D'FILE,REF FILE'END) CLOSED
  39. 9380 BLOCKS#:=DISK'GET(D'FILE,FILE'END)
  40. 9390 BLOCKS#:+256*DISK'GET(D'FILE,FILE'END)
  41. 9400 RETURN BLOCKS#
  42. 9410 ENDFUNC GET'BLOCKS#
  43. 9420 //
  44. 9430 //
  45. 9440 PROC CHECK'DIR'CYCLE(D'FILE,REF FILE'END,REF BLOCK'COUNT) CLOSED
  46. 9450 BLOCK'FLAG:=TRUE
  47. 9460 BLOCK'COUNT:+1
  48. 9470 IF BLOCK'COUNT=8 THEN
  49. 9480 BLOCK'COUNT:=0
  50. 9490 BLOCK'FLAG:=FALSE
  51. 9500 ENDIF 
  52. 9510 IF BLOCK'FLAG THEN DISK'GET'SKIP(2,D'FILE,FILE'END)
  53. 9520 ENDPROC CHECK'DIR'CYCLE
  54. 9530 //
  55. 9540 // END OF READ DIRECTORY ROUTINES
  56. 9550 //
  57.